//
//  CZEmoticonTools.swift
//  CZWeibo
//
//  Created by 左凯旭 on 16/8/19.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
//每页的 做多显示行和列 以及表情的个数
let CZEmoticonMaxCol =  7
let CZEmoticonMaxRow = 3
let CZEmoticonMaxCount = CZEmoticonMaxRow*CZEmoticonMaxCol-1

class CZEmoticonTools: NSObject {

    //设置一个全局访问的单例
    static let shareTools:CZEmoticonTools = CZEmoticonTools()
    
    
    //获取bundle 文件
    lazy var emoticonsBundle:NSBundle = {
        //路径
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        
        return NSBundle(path: path)!
    }()
  
    
    //默认表情的一维数组
    lazy var defaultEmoticons: [CZEmoticonModel] = {
        return self.getEmoticonsWithPath("default")
    }()
    //emoji 表情的一维数组
    lazy var emojiEmoticons:[CZEmoticonModel] = {
        return self.getEmoticonsWithPath("emoji")
    }()
    
    //lxh 表情的数组
    lazy var lxhEmoticons:[CZEmoticonModel] = {
       return self.getEmoticonsWithPath("lxh")
    }()
    
    
    //MARK: - 三维数组
    lazy var allEmoticons:[[[CZEmoticonModel]]] = {
        return[
            self.getEmoticonsGroupWithEmoticon(self.defaultEmoticons),
            self.getEmoticonsGroupWithEmoticon(self.emojiEmoticons),
            self.getEmoticonsGroupWithEmoticon(self.lxhEmoticons)
        ]
    }()
    
    
    
    
    //MARK: - 生成一个二维数组
    func getEmoticonsGroupWithEmoticon(emoticons:[CZEmoticonModel])->[[CZEmoticonModel]]{
     //最多显示几页
        let pageCount = (emoticons.count + CZEmoticonMaxCount - 1) / CZEmoticonMaxCount
        
        //创建可变的二维数组
        var tmpArray:[[CZEmoticonModel]] = [[CZEmoticonModel]]()
        
        //循环遍历
        for i in 0..<pageCount {
            //定义起点和长度
            let location = i*CZEmoticonMaxCount
            var length = CZEmoticonMaxCount
            // 由于默认表情为108哥  遍历到最后一组 [100,20] 而我们只有 到[100,8]
            if location + length > emoticons.count {
                length = emoticons.count - location
                
            }
            
            //范围
            let range = NSRange(location: location, length: length)
            //数字截取
          let array = (emoticons as NSArray).subarrayWithRange(range) as! [CZEmoticonModel]
            
            //添加到数组
            tmpArray.append(array)
        }
        return tmpArray
        
    }
    
    
    
    //读取plist文件 获取一维数组
    func getEmoticonsWithPath(path:String)->[CZEmoticonModel]{
        let file = emoticonsBundle.pathForResource("\(path)/info.plist", ofType: nil)!
        //获取数组
        let array = NSArray(contentsOfFile: file)!
        
        //创建一个可变数组
        var tmpArray:[CZEmoticonModel] = [CZEmoticonModel]()
        //遍历数组
        for dic in array {
            
            //字典转模型
            let model = CZEmoticonModel(dict: dic as! [String:AnyObject])
            
            model.path = "\(path)/"
            
            //添加到可变数组中
            tmpArray.append(model)
            
        }
        return tmpArray
    }
    // 遍历当前默认表情的一维数组 或者 浪小花的一维数组
    
    func searchEmoticonDefaultEmoticonOrLxhEmoticons(chs:String)->CZEmoticonModel?{
             // 遍历默认表情
        for emoticonModel in defaultEmoticons {
            // 判断外界传入的chs 和 当前的chs 是否相等
            if emoticonModel.chs == chs {
                return emoticonModel
            }
            
        }
        
        
        //遍历浪小花
        for emoticonModel in lxhEmoticons {
            // 判断外界传入的chs 和 当前的chs 是否相等
            if emoticonModel.chs == chs {
                return emoticonModel
            }
        }
        return nil
        
    }
    
}








